package com.ruoyi.common.utils;

import cn.hutool.core.date.DateUnit;
import org.apache.commons.lang3.time.DateFormatUtils;

import java.lang.management.ManagementFactory;
import java.util.Date;

/**
 * 时间工具类
 *
 * @author ruoyi
 */
public class DateUtil extends cn.hutool.core.date.DateUtil
{


    /**
     * 获取当前Date型日期
     *
     * @return Date() 当前日期
     */
    public static Date getNowDate()
    {
        return new Date();
    }


    /**
     * 日期路径 即年/月/日 如2018/08/08
     */
    public static final String datePath()
    {
        Date now = new Date();
        return DateFormatUtils.format(now, "yyyy/MM/dd");
    }




    /**
     * 日期路径 即年/月/日 如20180808
     */
    public static final String dateTime()
    {
        Date now = new Date();
        return DateFormatUtils.format(now, "yyyyMMdd");
    }



    /**
     * 日期路径 即年/月/日 如20180808
     */
    public static final String dateTime(String format)
    {
        Date now = new Date();
        return DateFormatUtils.format(now, format);
    }

    /**
     * 获取服务器启动时间
     */
    public static Date getServerStartDate()
    {
        long time = ManagementFactory.getRuntimeMXBean().getStartTime();
        return new Date(time);
    }


    /**
     * 判断过去多长时间
     *
     * @param beginDate 起始日期
     * @return  过去时间
     * @since 3.3.1
     */
    public static String pastTime(Date beginDate) {
        long between = between(beginDate, new Date(), DateUnit.MINUTE);
        if (between<5){
            return "刚刚";
        }
        between = between(beginDate, new Date(), DateUnit.HOUR);
        if (between<12){
            return formatTime(beginDate);
        }
        return formatDate(beginDate);
    }

    /**
     * 判断是否是日期字符串
     * @param str
     * @return
     */
    public static boolean isDate(String str){
        try {
            DateUtil.parse(str);
            return true;
        }catch (Exception e){
        }
        return false;
    }
}
